package com.killer_jin.core.common.base;

import org.springframework.aop.framework.AopContext;

/**
 * 获取自身代理对象的接口，以方便获取代理对象来操作当前类方法。Service接口只需要继承该接口，
 * T为接口本身即可，就可以通过self()获取自身的代理对象了。还需要在启动入口开启 @EnableAspectJAutoProxy(exposeProxy = true)，
 * 暴露代理对象，否则 AopContext.currentProxy() 会抛出异常。
 */
public interface ProxySelf<T> {
    /**
     * 取得当前对象的代理.
     *
     * @return 代理对象,如果未被代理,则抛出 IllegalStateException
     */
 /*   @SuppressWarnings("unchecked")
    default T self() {
        return (T) AopContext.currentProxy();
    }*/
}